/*
 * 版权所有：爱WiFi无线运营中心
 * 创建日期：2020-08-04 20:22:20:22
 * 创建作者：姜文斌
 * 文件名称：MyImportBeanDefinitionRegistrar
 * 版本：v1.0
 * 功能：
 * 修改记录：
 */
package invokebeandefinitionregistrypostprocess.imports;

import invokebeandefinitionregistrypostprocess.anno.EnableProxy;
import invokebeandefinitionregistrypostprocess.postprocess.JDKProxyPostProcessor;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.GenericBeanDefinition;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;

/**
 * @author 姜文斌
 * @since 1.0.0
 */
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
	@Override
	public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
		//注解了EnableProxy，注册一个自定义的RootBeanDefinition
		if (importingClassMetadata.hasAnnotation(EnableProxy.class.getName())) {
			GenericBeanDefinition beanDefinition = (GenericBeanDefinition) registry.getBeanDefinition("userServiceImpl");
			beanDefinition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE);
			RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(JDKProxyPostProcessor.class);
			registry.registerBeanDefinition(JDKProxyPostProcessor.class.getSimpleName(),rootBeanDefinition);
		}
	}
}